home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Collection of Tools & Utilities
/
Collection of Tools and Utilities.iso
/
pascal
/
tjoop11.zip
/
ELEMENTS.PAS
< prev
next >
Wrap
Pascal/Delphi Source File
|
1991-05-20
|
10KB
|
369 lines
UNIT Elements ;
{**********************************************************************
* *
* PROGRAM : Elements PC FILE NAME : Elements.PAS *
* ---------------------------------------------------------------- *
* LIBRARY MODULES USED : DOS CRT *
* BaseType : TP6.0 TPU SOURCE: BASETYPE.PAS BINARY: BASETYPE.TPU *
* ---------------------------------------------------------------- *
* PURPOSE : The purpose of this UNIT is to provide a set of *
* object elements for various data structures. *
* ---------------------------------------------------------------- *
* AUTHOR : Thomas E. Jenkins, Jr. *
* PROGRAMMER, UNIVERSITY OF SOUTH CAROLINA, USA *
* BITNET : C0361@UNIVSCVM.BITNET *
* INTERNET : C0361@univscvm.csd.scarolina.EDU *
* tomj@csdserver3.csd.scarolina.EDU *
* ---------------------------------------------------------------- *
* DISCAIMER : This program has been tested to the best of my *
* abilities. The author claims no responsibility *
* for the performance or side effects this program *
* may yield. *
* ---------------------------------------------------------------- *
* DISTIBUTION : This program is given freely to the PD realms. *
* It may freely be copied and distributed. Any *
* one wishing to use some or whole parts of this *
* program for commercial use please contact the *
* author first. *
* *
**********************************************************************}
INTERFACE
USES
BaseTypes;
CONST
STR_OBJ = 00001 ;
INT_OBJ = 00002 ;
REAL_OBJ = 00003 ;
TYPE
{
Here is a basic view of the Element object tree:
TObject [ to allow use with streams ]
|
|
\___ TBaseOBJ [ basic functions of stack & ]
| [ elements ]
|
\___ TElementOBJ [ basic functionality of ]
| [ any element ]
|
\___ TStrOBJ [ string specific ]
/ [ functions & storage ]
|
|
\___ TIntOBJ [ integer specific ]
/ [ functions & storage ]
|
|
\___ TRealOBJ [ real specific ]
[ functions & storage ]
}
PString = ^STRING ;
PINTEGER = ^INTEGER ;
PREAL = ^REAL ;
PStrOBJ = ^TStrOBJ ;
TStrOBJ = OBJECT ( TElementOBJ )
data : PString ;
CONSTRUCTOR Init ( s : STRING ) ;
FUNCTION TheType : WORD ;
VIRTUAL ;
FUNCTION GetData : POINTER ;
VIRTUAL ;
PROCEDURE SetData ( s : POINTER ) ;
VIRTUAL ;
PROCEDURE Display ;
VIRTUAL ;
DESTRUCTOR Done ;
VIRTUAL ;
END ; { TStrOBJ }
PIntOBJ = ^TIntOBJ ;
TIntOBJ = OBJECT ( TElementOBJ )
data : INTEGER ;
CONSTRUCTOR Init ( i : INTEGER ) ;
FUNCTION TheType : WORD ;
VIRTUAL ;
FUNCTION GetData : POINTER ;
VIRTUAL ;
PROCEDURE SetData ( i : POINTER ) ;
VIRTUAL ;
PROCEDURE Display ;
VIRTUAL ;
DESTRUCTOR Done ;
VIRTUAL ;
END ; { TIntOBJ }
PRealOBJ = ^TRealOBJ ;
TRealOBJ = OBJECT ( TElementOBJ )
data : REAL ;
CONSTRUCTOR Init ( r : REAL ) ;
FUNCTION TheType : WORD ;
VIRTUAL ;
FUNCTION GetData : POINTER ;
VIRTUAL ;
PROCEDURE SetData ( r : POINTER ) ;
VIRTUAL ;
PROCEDURE Display ;
VIRTUAL ;
DESTRUCTOR Done ;
VIRTUAL ;
END ; { TIntOBJ }
IMPLEMENTATION
{===========================================================================}
{== M E T H O D S ==}
{===========================================================================}
{------------------------------------------------}
{-- C O N S T R U C T O R S --}
{------------------------------------------------}
CONSTRUCTOR TStrOBJ.Init ( s : STRING ) ;
VAR
sLength : BYTE ABSOLUTE s ;
{ Length always available. No }
{ function call needed this way }
BEGIN { TStrOBJ.Init }
TElementOBJ.Init ;
GetMem ( data , Length ( s ) + 1 ) ; { Assign data to new node }
END ; { TStrOBJ.Init }
CONSTRUCTOR TIntOBJ.Init ( i : INTEGER ) ;
BEGIN { TIntOBJ.Init }
TElementOBJ.Init ;
data := i ;
END ; { TIntOBJ.Init }
CONSTRUCTOR TRealOBJ.Init ( r : REAL ) ;
BEGIN { TRealOBJ.Init }
TElementOBJ.Init ;
data := r ;
END ; { TRealOBJ.Init }
{------------------------------------------------}
{-- D E S T R U C T O R S --}
{------------------------------------------------}
DESTRUCTOR TStrOBJ.Done ;
BEGIN { TStrOBJ.Done }
FreeMem ( data , Length ( data^ ) + 1 ) ; { Release reservered memory }
END ; { TStrOBJ.Done }
DESTRUCTOR TIntOBJ.Done ;
BEGIN { TIntOBJ.Done }
END ; { TIntOBJ.Done }
DESTRUCTOR TRealOBJ.Done ;
BEGIN { TRealOBJ.Done }
END ; { TRealOBJ.Done }
{------------------------------------------------}
{-- M E T H O D S --}
{------------------------------------------------}
FUNCTION TStrOBJ.GetData : POINTER ;
BEGIN { TStrOBJ.GetData }
GetData := data ;
END ; { TStrOBJ.GetData }
FUNCTION TStrOBJ.TheType : WORD ;
BEGIN { TStrOBJ.TheType }
TheType := STR_OBJ ;
END ; { TStrOBJ.TheType }
PROCEDURE TStrOBJ.SetData ( s : POINTER ) ;
BEGIN { TStrOBJ.SetData }
FreeMem ( data , Length ( data^ ) + 1 ) ;
GetMem ( data , Length ( PString ( s )^ ) + 1 ) ;
data^ := PString ( s )^ ;
END ; { TStrOBJ.SetData }
PROCEDURE TStrOBJ.Display ;
BEGIN { T